package com.kang.service;

import java.util.List;

import com.kang.pojo.PurchaseOrder;
import com.kang.pojo.PurchaseOrderItem;
import com.vonechina.entity.page.PurchaseOrderPage;

/**
 * 采购订单服务层
 * 
 * @author zs614
 *
 */
public interface PurchaseOrderService {
	/**
	 * 新增采购订单
	 * 
	 * @param order
	 *            采购订单实体类
	 * @return
	 */
	public int insertOrder(PurchaseOrder order);

	/**
	 * 生成采购订单编号
	 * 
	 * @return
	 */
	public String generatoOrderNo();

	/**
	 * 保存采购订单物品信息
	 * 
	 * @param orderId
	 *            采购订单ID
	 * @param sourceID
	 *            物品来源ID
	 * @param itemNumber
	 *            采购数量
	 * @return
	 */
	public int saveOrderItem(Integer orderId, Integer[] sourceID, Integer[] itemNumber);

	/**
	 * 分页查询采购订单
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public List<PurchaseOrder> listPurchaseOrder(PurchaseOrderPage page);

	/**
	 * 删除采购订单
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @return
	 */
	public Integer deleteOrder(Integer purchaseOrderID);

	/**
	 * 删除采购订单物品信息
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @return
	 */
	public Integer deleteOrderAllItem(int purchaseOrderID);

	/**
	 * 查询采购订单物品信息
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @return
	 */
	public List<PurchaseOrderItem> listItemForOrder(int purchaseOrderID);

	/**
	 * 提交采购订单
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @param submitterID
	 *            提交人ID
	 * @return
	 */
	public Integer submitOrder(Integer purchaseOrderID, Integer submitterID);

	/**
	 * 计算采购订单金额
	 * 
	 * @param order
	 *            采购订单实体类
	 * @return
	 */
	public Double countOrderPrice(PurchaseOrder order);

	/**
	 * 结算采购订单
	 * 
	 * @param order
	 *            采购订单实体类
	 * @return
	 */
	public Integer settleOrder(PurchaseOrder order);

	/**
	 * 根据入库物品信息查询采购订单信息
	 * 
	 * @param id
	 *            采购入库物品信息ID
	 * @return
	 */
	public PurchaseOrder selectOrderById2(Integer id);

	/**
	 * 根据purchaseOrderID查询出purchaseorder
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @return
	 */
	public PurchaseOrder selectOrderById(Integer purchaseOrderID);

	/**
	 * 更新采购订单
	 * 
	 * @param order
	 *            采购订单实体类
	 * @return
	 */
	public Integer updateOrder(PurchaseOrder order);

	/**
	 * 更新采购订单状态
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @param status
	 *            状态
	 * @return
	 */
	public Integer updateStatus(Integer purchaseOrderID, Integer status);

	/**
	 * 查询采购订单表，用在采购入库添加订单
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public List<PurchaseOrder> listPurchaseOrder2(PurchaseOrderPage page);

	/**
	 * 查询采购订单表总条数，用在采购入库添加订单
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public Integer countPurchaseOrder2(PurchaseOrderPage page);

	/**
	 * 根据采购订单id查询出订单里面的物品
	 * 
	 * @param purchaseOrderItem
	 *            采购申请物品信息
	 * @return
	 */
	public List<PurchaseOrderItem> selectPurchaseorderIteminformationByPurchaseOrderID(
			PurchaseOrderItem purchaseOrderItem);

	/**
	 * 根据id查询出采购订单物品信息
	 * 
	 * @param id
	 *            采购订单物品ID
	 * @return
	 */
	public PurchaseOrderItem selectPurchaseorder_iteminformationById(Integer id);

	/**
	 * 根据采购订单id查询出订单里面的物品
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @param itemIds
	 *            物品ID
	 * @return
	 */
	public List<PurchaseOrderItem> selectPurchaseorderIteminformationByPurchaseOrderID2(Integer purchaseOrderID,
			Integer[] itemIds);

	/**
	 * 根据id修改updatePurchaseorder_iteminformationById
	 * 
	 * @param purchaseOrderItem
	 *            采购订单物品信息
	 * @return
	 */
	public int updatePurchaseorder_iteminformationById(PurchaseOrderItem purchaseOrderItem);

}
